/*
 *  Copyright (c) 2023-2025 苏州棱镜七彩信息科技有限公司 (Suzhou PrismAurora Information Technology Co.,Ltd)
 *  sbom-generate is licensed under Mulan PSL v2.
 *  You can use this software according to the terms and conditions of the Mulan PSL v2.
 *  You may obtain a copy of Mulan PSL v2 at:
 *           http://license.coscl.org.cn/MulanPSL2
 *  THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 *  See the Mulan PSL v2 for more details.
 * */
package com.ljqc.abs.sbom;

import com.ljqc.impl.sbom.CycloneDXGenerate;
import com.ljqc.impl.sbom.SPDXGenerate;
import com.ljqc.impl.sbom.SWIDGenerate;

/**
 * @ClassName SBom
 * @Description
 * @Date 2025/3/12 15:36
 * @Version V1.0
 **/
public enum SBom {
    SPDX_TAG_VALUE("spdx_tag_value.ftl", new SPDXGenerate(), ".spdx"),
    SPDX_JSON("spdx_json.ftl", new SPDXGenerate(), "_spdx.json"),
    SPDX_XML("spdx_xml.ftl", new SPDXGenerate(), "_spdx.xml"),
    CYCLONE_DX_JSON("cyclone_dx_json.ftl", new CycloneDXGenerate(), "_cyclone_dx.json"),
    CYCLONE_DX_XML("cyclone_dx_xml.ftl", new CycloneDXGenerate(), "_cyclone_dx.xml"),
    SWID_XML("swid_xml.ftl", new SWIDGenerate(), "_swid.xml");

    private final SBomGenerate sBomGenerate;
    private final String template;
    private final String suffix;

    SBom(String template, SBomGenerate sBomGenerate, String suffix) {
        this.template = template;
        this.sBomGenerate = sBomGenerate;
        this.suffix = suffix;
    }

    public SBomGenerate getSBomGenerate() {
        return this.sBomGenerate;
    }

    public String getTemplate() {
        return this.template;
    }

    public String getSuffix() {
        return this.suffix;
    }
}
